package br.com.model.resposta;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.model.Conexao;
import br.com.model.Permissao;
import br.com.model.resposta.Resposta;

public class RespostaDao extends Conexao implements IRespostaDao {

	@Override
	public boolean insert(Resposta resposta) {

		if (!this.selectOne(resposta)) {
			try (Connection conexao = getConexao()) {

				String sql = "INSERT INTO `resposta`(`resposta`) VALUES (?)";
				PreparedStatement stmt = conexao.prepareStatement(sql);
				stmt.setString(1, resposta.getResposta());
				stmt.execute();

				return true;
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				System.out.println(e.getMessage());
				return false;
			}
		}
		else
			return false;
	}

	@Override
	public boolean update(Resposta resposta) {
		// TODO Auto-generated method stub
		return false;
	}

	// retorna uma lista de 15 respostas em ordem aleatoria
	@Override
	public List<Resposta> selectList() {

		List<Resposta> lista = new ArrayList<Resposta>();

		try (Connection conexao = getConexao()) {

			String sql = "SELECT * FROM resposta ORDER BY RAND() LIMIT 15";
			PreparedStatement stmt = conexao.prepareStatement(sql);
			ResultSet res = stmt.executeQuery();
			Resposta resposta;
			while (res.next()) {
				resposta = new Resposta();
				resposta.setIdResposta(res.getInt("idResposta"));
				resposta.setResposta(res.getString("resposta"));
				lista.add(resposta);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage());
		}

		return lista;
	}

	@Override
	public boolean selectOne(Resposta resposta) {

		try (Connection conexao = getConexao()) {

			String sql = "SELECT * FROM resposta WHERE idResposta=? OR resposta=?";
			PreparedStatement stmt = conexao.prepareStatement(sql);
			stmt.setInt(1, resposta.getIdResposta());
			stmt.setString(2, resposta.getResposta());
			ResultSet res = stmt.executeQuery();
			boolean encontrou = false;
			while (res.next()) {
				resposta.setIdResposta(res.getInt("idResposta"));
				resposta.setResposta(res.getString("resposta"));

				encontrou = true;
			}
			return encontrou;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage());
			return false;
		}
	}

	@Override
	public boolean delete(Resposta resposta) {
		// TODO Auto-generated method stub
		return false;
	}

}
